
#pragma once
#include "ShaderNode.h"

class ShaderVertex : public ShaderNode
{
public:
	ShaderVertex();
	virtual ~ShaderVertex() = default;

public:
	virtual bool isValid() { return m_vao > 0; }
	virtual void release();
	virtual bool init();

public:
	virtual void bindingVertexArray();
	virtual void cleanVertexArray();

protected:
	virtual void initBinding();
	virtual void cleanBinding();

public:
	virtual void draw(GLuint vertexSize, GLuint vertexIndex = 0) = 0;
	
private:
	GLuint m_vao;
};

typedef std::shared_ptr<ShaderVertex> ShaderVertexPtr;